package itheima.com.zuoye.zy6;

import itheima.com.stream.Student;

import java.util.*;
import java.util.stream.Stream;

public class Test {
    public static void main(String[] args) {
//        1.键盘录入3个学生信息,存储到学生对象(姓名,年龄).然后添加到ArrayList集合中.
        Scanner sc = new Scanner(System.in);
        ArrayList<Students> list = new ArrayList<>();
        Students s1 = new Students();
        System.out.println("请输入学生姓名:");
        s1.setName(sc.next());
        System.out.println("请输入学生年龄:");
        s1.setAge(sc.nextInt());
        list.add(s1);
        Students s2 = new Students();
        System.out.println("请输入学生姓名:");
        s2.setName(sc.next());
        System.out.println("请输入学生年龄:");
        s2.setAge(sc.nextInt());
        list.add(s2);
        Students s3 = new Students();
        System.out.println("请输入学生姓名:");
        s3.setName(sc.next());
        System.out.println("请输入学生年龄:");
        s3.setAge(sc.nextInt());
        list.add(s3);
//        2.键盘录入3个居住地信息,添加到另一个集合ArrayList;
        ArrayList<String> list2 = new ArrayList<>();
        System.out.println("请输入居住地:");
        list2.add(sc.next());
        System.out.println("请输入居住地:");
        list2.add(sc.next());
        System.out.println("请输入居住地:");
        list2.add(sc.next());
//        3.把两个list集合中的数据收集到同一个map集合中,键是学生对对象,值是居住地址.
        Map<Students, String> map = new LinkedHashMap<>(); // 保持插入顺序
        for (int i = 0; i < list.size(); i++) {
            Students stu = list.get(i);
            String addr  = list2.get(i);
            map.putIfAbsent(stu, addr);
        }
        map.entrySet().stream()
                .sorted((k1, v1)->v1.getKey().getAge()-k1.getKey().getAge())
                .filter(entry->entry.getKey().getName().startsWith("张"))
                .forEach(entry->{
                    System.out.println(entry.getKey()+"--"+entry.getValue());
                });
        // 如果 key 已存在，put 会覆盖；这里用 putIfAbsent 保留第一次
//        4.要求map集合中不能存在相同的学生信息.并按照学生年龄降序排列

//        5.使用Stream流输出集合中所有姓张的人信息
    }
}
